function deepCopy(oldData){
    if (typeof oldData==='object' && oldData !==null){
        let res = Array.isArray(oldData)?[]:{};
        for (let k in oldData){
            if (oldData.hasOwnProperty(k)){
                res[k] = deepCopy(oldData[k]);
            }
        }
        return res
    } else {
        return oldData
    }
}

let ob1 = {name:{"age":12},sex:[1,2,3]}
let ob2 = deepCopy(ob1)
ob2.name.age = 34
ob2.sex.push(89)

console.log(ob1.name.age)
console.log(ob1.sex)
console.log(ob2.name.age)
console.log(ob2.sex)


// function getTransitionColor(color1, color2, progress) {
//     // 将颜色转换为数组形式
//     const color1Arr = hexToRgb(color1);
//     const color2Arr = hexToRgb(color2);
//
//     // 计算过渡颜色
//     const transitionColorArr = [];
//     for (let i = 0; i < 3; i++) {
//         let progressFactor = (color2Arr[i] - color1Arr[i]) * progress + color1Arr[i];
//         transitionColorArr.push(Math.round(progressFactor));
//     }
//
//     return `rgb(${transitionColorArr[0]},${transitionColorArr[1]},${transitionColorArr[2]})`;
// }
//
// function hexToRgb(hex) {
//     // 将16进制颜色转换为RGB格式
//     let result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex);
//     return result ? [
//         parseInt(result[1], 16),
//         parseInt(result[2], 16),
//         parseInt(result[3], 16)
//     ] : [];
// }
//
// // 使用示例：
// const color1 = '#FF0000'; // 红色
// const color2 = '#00FF00'; // 绿色
// const progress = 0.5; // 中间位置
// const transitionColor = getTransitionColor(color1, color2, progress); // 计算过渡颜色
// console.log(transitionColor); // 输出过渡颜色值


function getTransitionColors(color1, color2, steps) {
    // 将颜色转换为数组形式
    const color1Arr = hexToRgb(color1);
    const color2Arr = hexToRgb(color2);

    // 计算过渡颜色
    const transitionColors = [];
    for (let i = 0; i <= steps; i++) {
        let progress = i / steps;
        let transitionColorArr = [];
        for (let j = 0; j < 3; j++) {
            let progressFactor = (color2Arr[j] - color1Arr[j]) * progress + color1Arr[j];
            transitionColorArr.push(Math.round(progressFactor));
        }
        transitionColors.push(`rgb(${transitionColorArr[0]},${transitionColorArr[1]},${transitionColorArr[2]})`);
    }

    return transitionColors;
}

function hexToRgb(hex) {
    // 将16进制颜色转换为RGB格式
    let result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex);
    return result ? [
        parseInt(result[1], 16),
        parseInt(result[2], 16),
        parseInt(result[3], 16)
    ] : [];
}

// 使用示例：
const color1 = '#FF0000'; // 红色
const color2 = '#00FF00'; // 绿色
const steps = 20; // 中间过渡的步数
const transitionColors = getTransitionColors(color1, color2, steps); // 计算过渡颜色数组
console.log(transitionColors); // 输出过渡颜色数组
